<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<title>OpenCV: opencv2/surface_matching/ppf_helpers.hpp File Reference</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../tutorial-utils.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
   &#160;<span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="../../dir_4494769977b77857828b1c52a54c5ac4.html">opencv2</a></li><li class="navelem"><a class="el" href="../../dir_fe5047375b1b9d8d9a157e5de194ff1f.html">surface_matching</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">ppf_helpers.hpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../d0/d9c/core_2include_2opencv2_2core_8hpp.html">opencv2/core.hpp</a>&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d2/d75/namespacecv"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d75/namespacecv.html">cv</a></td></tr>
<tr class="memdesc:d2/d75/namespacecv"><td class="mdescLeft">&#160;</td><td class="mdescRight">"black box" representation of the file storage associated with a file on disk. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d0/de6/namespacecv_1_1ppf__match__3d"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/de6/namespacecv_1_1ppf__match__3d.html">cv::ppf_match_3d</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga7ba92c6b7cb6cc7565c2c038ddc88bbb"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga7ba92c6b7cb6cc7565c2c038ddc88bbb">cv::ppf_match_3d::addNoisePC</a> (Mat pc, double scale)</td></tr>
<tr class="separator:ga7ba92c6b7cb6cc7565c2c038ddc88bbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba913ce390921fb9cb212de4198665a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gaba913ce390921fb9cb212de4198665a2">cv::ppf_match_3d::computeBboxStd</a> (Mat pc, Vec2f &amp;xRange, Vec2f &amp;yRange, Vec2f &amp;zRange)</td></tr>
<tr class="separator:gaba913ce390921fb9cb212de4198665a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa74e62c7b2a8b8a70e44e42211fd00f5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gaa74e62c7b2a8b8a70e44e42211fd00f5">cv::ppf_match_3d::computeNormalsPC3d</a> (const Mat &amp;PC, Mat &amp;PCNormals, const int NumNeighbors, const bool FlipViewpoint, const Vec3f &amp;viewpoint)</td></tr>
<tr class="memdesc:gaa74e62c7b2a8b8a70e44e42211fd00f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the normals of an arbitrary point cloud computeNormalsPC3d uses a plane fitting approach to smoothly compute local normals. Normals are obtained through the eigenvector of the covariance matrix, corresponding to the smallest eigen value. If PCNormals is provided to be an Nx6 matrix, then no new allocation is made, instead the existing memory is overwritten.  <a href="../../d9/d25/group__surface__matching.html#gaa74e62c7b2a8b8a70e44e42211fd00f5">More...</a><br /></td></tr>
<tr class="separator:gaa74e62c7b2a8b8a70e44e42211fd00f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga439450ce38dae0b87bf497c50d6211e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga439450ce38dae0b87bf497c50d6211e9">cv::ppf_match_3d::destroyFlann</a> (void *flannIndex)</td></tr>
<tr class="separator:ga439450ce38dae0b87bf497c50d6211e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ef8ad47fa5a52443c05cd0fafba11cc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga4ef8ad47fa5a52443c05cd0fafba11cc">cv::ppf_match_3d::getRandomPose</a> (Matx44d &amp;Pose)</td></tr>
<tr class="separator:ga4ef8ad47fa5a52443c05cd0fafba11cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadca01b67adab0bbbdd5b2507f63c7f21"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gadca01b67adab0bbbdd5b2507f63c7f21">cv::ppf_match_3d::indexPCFlann</a> (Mat pc)</td></tr>
<tr class="separator:gadca01b67adab0bbbdd5b2507f63c7f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad893719cc47a72b24482f2bfdebb409e"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gad893719cc47a72b24482f2bfdebb409e">cv::ppf_match_3d::loadPLYSimple</a> (const char *fileName, int withNormals=0)</td></tr>
<tr class="memdesc:gad893719cc47a72b24482f2bfdebb409e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load a PLY file.  <a href="../../d9/d25/group__surface__matching.html#gad893719cc47a72b24482f2bfdebb409e">More...</a><br /></td></tr>
<tr class="separator:gad893719cc47a72b24482f2bfdebb409e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaae4792bf8469222356c16364759941aa"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gaae4792bf8469222356c16364759941aa">cv::ppf_match_3d::normalizePCCoeff</a> (Mat pc, float scale, float *Cx, float *Cy, float *Cz, float *MinVal, float *MaxVal)</td></tr>
<tr class="separator:gaae4792bf8469222356c16364759941aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1f97667a487faab9bd849341361db1a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga1f97667a487faab9bd849341361db1a1">cv::ppf_match_3d::queryPCFlann</a> (void *flannIndex, Mat &amp;pc, Mat &amp;indices, Mat &amp;distances)</td></tr>
<tr class="separator:ga1f97667a487faab9bd849341361db1a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac98a74b02d163b63ec68e8bf6ebcf8c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gac98a74b02d163b63ec68e8bf6ebcf8c6">cv::ppf_match_3d::queryPCFlann</a> (void *flannIndex, Mat &amp;pc, Mat &amp;indices, Mat &amp;distances, const int numNeighbors)</td></tr>
<tr class="separator:gac98a74b02d163b63ec68e8bf6ebcf8c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga685d0fc50635dfdd4ebc587067ff44a9"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga685d0fc50635dfdd4ebc587067ff44a9">cv::ppf_match_3d::samplePCByQuantization</a> (Mat pc, Vec2f &amp;xrange, Vec2f &amp;yrange, Vec2f &amp;zrange, float sample_step_relative, int weightByCenter=0)</td></tr>
<tr class="separator:ga685d0fc50635dfdd4ebc587067ff44a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafa74163329034224819de46933541e9c"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gafa74163329034224819de46933541e9c">cv::ppf_match_3d::samplePCUniform</a> (Mat PC, int sampleStep)</td></tr>
<tr class="separator:gafa74163329034224819de46933541e9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d137ea853b0263108fc324cff4656f3"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga5d137ea853b0263108fc324cff4656f3">cv::ppf_match_3d::samplePCUniformInd</a> (Mat PC, int sampleStep, std::vector&lt; int &gt; &amp;indices)</td></tr>
<tr class="separator:ga5d137ea853b0263108fc324cff4656f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab21c92ff881ae85b72c552e7e6e52c55"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gab21c92ff881ae85b72c552e7e6e52c55">cv::ppf_match_3d::transformPCPose</a> (Mat pc, const Matx44d &amp;Pose)</td></tr>
<tr class="separator:gab21c92ff881ae85b72c552e7e6e52c55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab6d5a91876b73a024830da8405909b79"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#gab6d5a91876b73a024830da8405909b79">cv::ppf_match_3d::transPCCoeff</a> (Mat pc, float scale, float Cx, float Cy, float Cz, float MinVal, float MaxVal)</td></tr>
<tr class="separator:gab6d5a91876b73a024830da8405909b79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga72ffa4c73f214a573cb4028e015c4adb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga72ffa4c73f214a573cb4028e015c4adb">cv::ppf_match_3d::writePLY</a> (Mat PC, const char *fileName)</td></tr>
<tr class="memdesc:ga72ffa4c73f214a573cb4028e015c4adb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a point cloud to PLY file.  <a href="../../d9/d25/group__surface__matching.html#ga72ffa4c73f214a573cb4028e015c4adb">More...</a><br /></td></tr>
<tr class="separator:ga72ffa4c73f214a573cb4028e015c4adb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga965333522cfe06814478dec8ffa4cd41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d25/group__surface__matching.html#ga965333522cfe06814478dec8ffa4cd41">cv::ppf_match_3d::writePLYVisibleNormals</a> (Mat PC, const char *fileName)</td></tr>
<tr class="memdesc:ga965333522cfe06814478dec8ffa4cd41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used for debbuging pruposes, writes a point cloud to a PLY file with the tip of the normal vectors as visible red points.  <a href="../../d9/d25/group__surface__matching.html#ga965333522cfe06814478dec8ffa4cd41">More...</a><br /></td></tr>
<tr class="separator:ga965333522cfe06814478dec8ffa4cd41"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Tolga Birdal &lt;tbirdal AT gmail.com&gt; </dd></dl>
</div></div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:33 for OpenCV by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
